/*
 * Equipe: Menandro Dias E. Neto
 *         Thiago Torres
 *         Ubirajara Gabriela
 */

package com.mapdelivery.model;

import com.mapdelivery.beans.MapDeliveryBean;
import com.mapdelivery.beans.Cliente;
import com.mapdelivery.model.dao.DAOCliente;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author menandro.neto
 */
public class ModelClientes implements ModelProxy {

    private ArrayList<MapDeliveryBean> clientes;
    private DAOCliente daoCliente;

    public ModelClientes() {
        this.clientes = new ArrayList<MapDeliveryBean>();
        this.daoCliente = new DAOCliente();
    }

    public Integer count(){
        return this.clientes.size();
    }

    public void virtualDataProducer(){
        this.makeTestData();
    }

    /**
     *
     * @return Sucess when deleted
     */
    public Boolean delete(Integer pos) {
        Cliente bean = (Cliente) this.clientes.get(pos);
        this.daoCliente.delete( bean.getClienteId() );
        return this.clientes.remove(pos);
    }

    /**
     *
     * @return Sucess when inserted
     */
    public Boolean insert(MapDeliveryBean item) {
        this.daoCliente.insert(item);
        return this.clientes.add( (Cliente) item);
    }

    /**
     *
     * @return Sucess when updated
     */
    public Boolean update(Integer pos, MapDeliveryBean item) {
        Boolean ret;
        ret = ( pos.intValue() < 0 || pos.intValue() >= this.clientes.size() );
        if (ret)
                this.clientes.set(pos.intValue(), (Cliente) item);

        Cliente bean = (Cliente) this.clientes.get(pos);
        this.daoCliente.update(bean.getClienteId(), item);

        return ret;
    }

    /**
     *
     * @return ArrayList<MapDeliveryBean>
     */
    public ArrayList<MapDeliveryBean> list() {
        this.clientes.removeAll(clientes);
        this.clientes = this.daoCliente.findAll();
        return( this.clientes );
    }

    private void makeTestData(){
        this.clientes = this.daoCliente.findAll();
        /*
        int i, j = 1;
        Cliente test;
        for (i = this.count(); i < 15; i++) {
            test = new Cliente();
            j += i;

            test.setClienteId(i + 1);
            test.setPessoaId(j);
            test.setPesNome( "Teste Atributo Nome ".concat( String.valueOf(j) ) );
            test.setPesApelido( "Teste Atributo Apelido ".concat( String.valueOf(j) ) );
            test.setCliAtivo('1');
            test.setPesCidade("Salvador");
            
            this.insert(test);
        }
        */
    }
}
